import taichi as ti

ti.init(arch=ti.cuda, debug=True)


#assert 只有在上述初始化taichi时标记debug=True才起效
@ti.kernel
def copy(src: ti.template(), dst: ti.template()):
    assert src.shape == dst.shape
    for i in dst:
        dst[i] = src[i]


a = ti.field(ti.f32, 4)
b = ti.field(ti.f32, 100)

# copy(a,b)


@ti.kernel
def foo():
    matrix = ti.Matrix([[1, 2], [3, 4], [5, 6]])
    print(matrix.n)
    print(matrix.m)
    vector = ti.Vector([7, 8, 9])
    print(vector.n)
    print(vector.m)


foo()


#taichi中同一个参数进入kernel后会被标定已经实例化
# 下一次同样参数进入不会再次实例化
# 并调用先前已经实例化好的参数
#若多测传不同的参数则会遇见新参数就实例化 这样可能会降低效率
@ti.kernel
def fee(x: ti.template()):
    ...


a = 1
b = 2
fee(a)
fee(a)
fee(b)
